<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="Y3n8X" id="Y3n8X"><span data-lake-id="ud0e46b5d" id="ud0e46b5d">典型回答</span></h1>
  <p data-lake-id="u8b8aeabc" id="u8b8aeabc"><br></p>
  <p data-lake-id="uf999ee9c" id="uf999ee9c"><span data-lake-id="u264bbec2" id="u264bbec2">JVM工具主要用来监控JVM的，这类工具主要分为两大类，第一类是JVM自带的，比如jstat、jmap等，还有依赖是第三方的，如VisualVM等。</span></p>
  <p data-lake-id="u37ab927b" id="u37ab927b"><span data-lake-id="u047b0dc7" id="u047b0dc7">​</span><br></p>
  <p data-lake-id="u4847d0a5" id="u4847d0a5"><span data-lake-id="u711ba8a7" id="u711ba8a7">这些工具的用途都不太一样，监控的方向也不一样。下面是简单的介绍：</span></p>
  <p data-lake-id="u9ae0d14b" id="u9ae0d14b"><span data-lake-id="u79a76acc" id="u79a76acc">​</span><br></p>
  <p data-lake-id="u24c6ac3b" id="u24c6ac3b"><strong><span data-lake-id="udde8b575" id="udde8b575">jps：JDK 1.5提供的一个显示当前所有java进程pid的命令，简单实用，非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。</span></strong></p>
  <p data-lake-id="u9af82be6" id="u9af82be6"><br></p>
  <p data-lake-id="u62499449" id="u62499449"><strong><span data-lake-id="ud20d6d2d" id="ud20d6d2d">jstack：Java虚拟机自带的命令行工具，主要用于生成线程的堆栈信息，用于诊断死锁及线程阻塞等问题。</span></strong></p>
  <p data-lake-id="u0e9cfc47" id="u0e9cfc47"><strong><span data-lake-id="u938ebb8a" id="u938ebb8a">​</span></strong><br></p>
  <p data-lake-id="u4c7c68bc" id="u4c7c68bc"><strong><span data-lake-id="ua0176d7a" id="ua0176d7a">​</span></strong><br></p>
  <p data-lake-id="u2705090f" id="u2705090f"><strong><span data-lake-id="u0f747d85" id="u0f747d85">jmap：Java虚拟机自带的命令行工具，可以生成JVM中堆内存的Dump文件，用于分析堆内存的使用情况。排查内存泄漏等问题。</span></strong></p>
  <p data-lake-id="ue74cdd53" id="ue74cdd53"><strong><span data-lake-id="u6c070d33" id="u6c070d33">​</span></strong><br></p>
  <p data-lake-id="u7efb11b8" id="u7efb11b8"><strong><span data-lake-id="u5a82e4a6" id="u5a82e4a6">​</span></strong><br></p>
  <p data-lake-id="u744f1e97" id="u744f1e97"><strong><span data-lake-id="ufdac9975" id="ufdac9975">jstat：Java虚拟机自带的命令行工具，主要用来监控JVM中的类加载、GC、线程等信息。</span></strong></p>
  <p data-lake-id="u8b73a1b8" id="u8b73a1b8"><strong><span data-lake-id="u55e77d7e" id="u55e77d7e">​</span></strong><br></p>
  <p data-lake-id="uee98a079" id="uee98a079"><br></p>
  <p data-lake-id="u0d7450fc" id="u0d7450fc"><strong><span data-lake-id="uad960ff5" id="uad960ff5">jhat：使用jmap可以生成Java堆的Dump文件，生成dump文件之后就可以用jhat命令，将dump文件转成html的形式，然后通过http访问可以查看堆情况。</span></strong></p>
  <p data-lake-id="u223cfcba" id="u223cfcba"><strong><span data-lake-id="u27fb5fac" id="u27fb5fac">​</span></strong><br></p>
  <p data-lake-id="u164c3296" id="u164c3296"><br></p>
  <p data-lake-id="u101be749" id="u101be749"><span data-lake-id="ue4a98cf7" id="ue4a98cf7">JConsole：一个基于JMX（Java Management Extensions）的监控工具，可以用来监视JVM中的内存、线程、GC等信息，并可以执行一些诊断和故障排除任务。</span></p>
  <p data-lake-id="u4461ca45" id="u4461ca45"><span data-lake-id="u7c3a68ea" id="u7c3a68ea">VisualVM：一个基于NetBeans平台的可视化工具，可以监视本地和远程JVM进程的性能和资源使用情况，包括CPU、内存、线程、GC等信息，并可以进行故障排除和性能分析。</span></p>
  <p data-lake-id="ua2a82c99" id="ua2a82c99"><span data-lake-id="u8c965c55" id="u8c965c55">YourKit：一个商业的JVM分析工具，可以进行内存、CPU、线程等方面的分析，提供了一些高级功能如内存泄漏检测、代码热替换等。</span></p>
  <p data-lake-id="ue8191ab2" id="ue8191ab2"><span data-lake-id="u9ce02fe4" id="u9ce02fe4">JProfiler：一个商业的JVM分析工具，可以监视JVM中的内存、线程、GC等信息，并提供一些高级功能如代码分析、内存泄漏检测等。</span></p>
  <p data-lake-id="ub89165fd" id="ub89165fd"><strong><span data-lake-id="ude132443" id="ude132443">Arthas：Arthas 是Alibaba开源的Java诊断工具，非常强大，非常推荐，</span></strong></p>
 </body>
</html>